home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso / 0957 / gnugrep / gui / dirmat~1.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-19  |  3.0 KB  |  75 lines

  1. /***********************************************************************
  2. * class CDirMatcher - Assists in processing directories to find
  3. * files matching wildcard, attribute, date/time and filesize
  4. * requirements.
  5. *
  6. * Copyright (C) D. Munro 1996
  7. *
  8. * This program source is freely redistributable.
  9. ************************************************************************
  10.  
  11.  
  12. #ifndef __DIRMATCHER__
  13. #define __DIRMATCHER__ 
  14.  
  15. #include <limits.h>
  16.  
  17. #define ALL_ATTRIBUTES FILE_ATTRIBUTE_ARCHIVE | 
  18.  
  19. class CDirMatcher 
  20. {
  21. private:
  22.     CStringArray            m_strarrFileSpecs;
  23.     COleDateTime            m_oledteStartTime, m_oledteEndTime;
  24.     __int64                        m_qwMinSize, m_qwMaxSize;
  25.     BOOL                            m_bMatchReadOnly, m_bMatchDirectory, m_bMatchHidden, 
  26.                                         m_bMatchSystem, m_bMatchNormal, m_bMatchArchive;
  27.  
  28.     void _Constructor_(BOOL bMatchHidden, BOOL bMatchSystem, 
  29.                                             BOOL bMatchReadOnly, BOOL bMatchDirectory, 
  30.                                             BOOL bMatchNormal, BOOL bMatchArchive,
  31.                                             COleDateTime *pStartTime, COleDateTime *pEndTime, 
  32.                                             DWORD dwMinSizeLo, DWORD dwMinSizeHi, 
  33.                                             DWORD dwMaxSizeLo, DWORD dwMaxSizeHi);
  34.  
  35.     void _SetDates_(COleDateTime *pStartTime, COleDateTime *pEndTime);
  36.     void _SetSizes_(DWORD dwMinSizeLo, DWORD dwMinSizeHi, DWORD dwMaxSizeLo, 
  37.                                     DWORD dwMaxSizeHi);
  38.     void _SetSpecs_(CString strSpec, CString &strName, CString &strExt);
  39.     void _ExpandSpec_(CString &strExpNameSpec, int nNameLen);
  40.     BOOL _MatchSpecToName_(CString strSpec, CString strName);
  41.     int _ParseSpecs_(CString strSpecs);
  42.  
  43. public:
  44.     CDirMatcher(CStringArray &strarrSpecs, 
  45.                             BOOL bMatchHidden =FALSE, BOOL bMatchSystem =FALSE, 
  46.                             BOOL bMatchReadOnly =TRUE, BOOL bMatchDirectory = TRUE,
  47.                             BOOL bMatchNormal =TRUE, BOOL bMatchArchive =TRUE,
  48.                             COleDateTime *pStartTime =NULL, COleDateTime *pEndTime =NULL,
  49.                             DWORD dwMinSizeLo =0, DWORD dwMinSizeHi =0, 
  50.                             DWORD dwMaxSizeLo =INT_MAX, DWORD dwMaxSizeHi =INT_MAX);
  51.  
  52.     CDirMatcher(CString strSpecs ="*.*", 
  53.                             BOOL bMatchHidden =FALSE, BOOL bMatchSystem =FALSE, 
  54.                             BOOL bMatchReadOnly =TRUE, BOOL bMatchDirectory = TRUE,
  55.                             BOOL bMatchNormal =TRUE, BOOL bMatchArchive =TRUE,
  56.                             COleDateTime *pStartTime =NULL, COleDateTime *pEndTime =NULL,
  57.                             DWORD dwMinSizeLo =0, DWORD dwMinSizeHi =0, 
  58.                             DWORD dwMaxSizeLo =INT_MAX, DWORD dwMaxSizeHi =INT_MAX);
  59.  
  60.     void SetAttributes(BOOL bMatchReadOnly =TRUE, BOOL bMatchDirectory = TRUE,
  61.                                         BOOL bMatchHidden =FALSE, BOOL bMatchSystem =FALSE, 
  62.                                         BOOL bMatchNormal =TRUE, BOOL bMatchArchive =TRUE);
  63.     void SetFileSpecs(CStringArray strarrSpecs);
  64.     void AddFileSpec(CString strSpec);
  65.     void SetDates(COleDateTime *pStartTime =NULL, COleDateTime *pEndTime =NULL)
  66.                     {    _SetDates_(pStartTime, pEndTime); };
  67.     void SetSizes(DWORD dwMinSizeLo =0, DWORD dwMinSizeHi =0, 
  68.                                 DWORD dwMaxSizeLo =INT_MAX, DWORD dwMaxSizeHi =INT_MAX)
  69.                     { _SetSizes_(dwMinSizeLo, dwMinSizeHi, dwMaxSizeLo, dwMaxSizeHi); }
  70.     int GetNoSpecs() { return m_strarrFileSpecs.GetSize(); }
  71.     BOOL Match(WIN32_FIND_DATA *pFindData);
  72. };
  73.  
  74. #endif
  75.